Syndrome and Error Detection
$ (n,k)線形コードを考える。生成行列$ G, パリティチェック行列$ Hとして、code word$ \bold{v}がノイズのある伝送路で伝送される状況を考える。
受信側でうけとったベクトルを$ \bold{r} = (r_0, r_1, \dots , r_{n-1})とすると、チャンネルノイズによりこれは$ \bold{v}とは異なるものになっている。エラーベクトル(またはエラーパターン)を、次の式で定義する。
$ \bold{e} = \bold{r} + \bold{v} = (e_0, e_1, \dots , e_{n-1})
eに含まれる1はtransmission error(伝送エラー)である。
デコーダーが$ \bold{r}を受け取ったとき、まずデコーダーは受け取ったベクトルに伝送エラーが含まれるかどうかを判断する。もしエラーが含まれていることがわかったら、エラーの場所を見つけて修正するか(FEC)、もう一度メッセージを送信するように要求する(ARQ)
デコーダーは、$ \bold{r}を受け取ったとき、次の形の$ (n,k)タプルを計算する。
$ \bold{s} = \bold{r} \cdot \bold{H}^T = (s_0, s_1, \dots , s_{n-k-1})
これを$ \bold{r}のシンドロームと呼ぶ。$ \bold{r}がコードワードであることと、$ \bold{s} = \bold{0}であることとは同値である。
ここで、
$ \bold{s} = \bold{r} \cdot \bold{H}^T = (\bold{v} + \bold{e}) \cdot \bold{H}^T = \bold{e} \cdot \bold{H}^T
より、未知数$ n個で式の数が$ n-k個(Hの行の数=H^Tの列の数)の線形方程式が得られる。
この解空間の次元は$ kなので、$ 2^k通りの解があり、どれがただしいエラーベクトルなのかをこのシンドロームの方程式だけから決めることはできない。
そこで、最尤法をとる。つまり、上の方程式を満たすエラーベクトルのうち、もっとも確率の高いものを選択する。
もしチャンネルがBSCであれば、最も確率が高いのは、最もnonzero bitの少ないエラーパターンである。
$ (7,4)線形ブロックコードは、どのような単一エラーも訂正可能であることをのちに証明する。
上記の線形方程式から真のエラーベクトルを決定する様々な方法についてものちに議論する。